import { eventMap } from "./eventMap"

const eventManager = {
    init: function (params) {
        Memory['event'] = {}    // 初始化事件中心内存
    },
    /**运行事件中心 */
    run: function (params) {
        // TODO: 2024/01/08是否要根据房间所属做一些限制？
        let eventMemory = Memory['event']
        if (eventMemory.length == 0) return // 无事件，无需运行
        Object.keys(eventMemory).map(eventDescript => {
            let eventDeta = eventMemory[eventDescript]
            if (Game.time >= eventDeta.time) {
                // try {
                    eventMap[eventDeta.eventMap](eventDeta.params)
                    // 满足触发时间，执行事件
                // } catch (error) {
                //     console.log(`${Date()}:事件中心触发bug,异常事件名为：${eventDescript}`);
                //     console.log(JSON.stringify(error));
                //     console.log(error);
                // }
                delete eventMemory[eventDescript]
            }
        })

    },
    /**添加事件到事件池
     * 
     * @param {String} eventDescript 
     * @param {Number} time 
     * @param {eventMap} eventMap 
     * @param {Object} params 
     * @returns 
     */
    add: function (eventDescript, time, eventMap, params = {}) {
        // 对入参进行一些限制
        if (!eventMap.name) {
            console.log('入参不是eventMap枚举值');
            return
        }
        let eventMemory = Memory['event']
        eventDescript = `第${Game.time}Tick:${eventDescript}`
        let deta = {
            time: time + Game.time,             // 触发时间
            eventMap: eventMap.name,   // 触发的事件名称，在枚举类中存在对应映射
            params: params          // 事件附带参数
        }
        eventMemory[eventDescript] = deta
    },
    get: function () {

    },
    finished: function () {

    }
}

export default eventManager